**REGION Explicación del registro de eventos en Infini Analytics
# Subflujo de ejemplo para registrar eventos de Infini Analytics desde Power Automate Desktop.
/# Para todos los registros de eventos (ya sean de tipo START, EVENT, ERROR o END), se precisa de:
- AutomationId: identificador único del automatismo en la plataforma.
- Token: token de la organización en la plataforma.
- Execution ID: identificador de la ejecución. Por defecto es la fecha y hora de inicio de la ejecución. Si tu automatismo tiene un identificador único para cada ejecución, puedes sustituir la variable "InfiniAnalyticsExecutionId" por ese valor.
#/
/# Para activar cada uno de los registros debes hacer lo siguiente:
- START/EVENT/END: definir la variable "Event" como "[START/EVENT/END] - [Descripción del evento]" y ejecutar el subflujo "InfiniAnalyticsAPI".
- ERROR: definir la variable "Event" como "E[id error] - [Descripción del error]" y ejecutar el subflujo "InfiniAnalyticsAPI". Se puede hacer en el flujo principal o dentro de un bloque de error.#/
**ENDREGION
BLOCK 'Excepción de errores para evitar fallos debido a la monitorización con Infini Analytics'
ON BLOCK ERROR

END
    **REGION Limpieza de caracteres no permitidos en JSON
    Text.SplitText.SplitWithDelimiter Text: Event CustomDelimiter: $'''-''' IsRegEx: False Result=> EventList
    IF EventList.Count < 2 THEN
        SET EventDescriptionInfiniAnalytics TO Event
    ELSE
        Text.Replace.ReplaceText Text: EventList[1] TextToFind: $'''\"''' IgnoreCase: False ReplaceWith: $'''\'''' ActivateEscapeSequences: True ComparisonType: Text.TextComparisonType.CultureSensitive Result=> EventDescriptionInfiniAnalytics
        Text.Replace.ReplaceTextWithRegex Text: EventDescriptionInfiniAnalytics TextToFind: $'''\\r\\n''' IgnoreCase: False ReplaceWith: $'''%''%''' ActivateEscapeSequences: False Result=> EventDescriptionInfiniAnalytics
        Text.Replace.ReplaceText Text: EventDescriptionInfiniAnalytics TextToFind: $'''\\''' IgnoreCase: False ReplaceWith: $'''%''%''' ActivateEscapeSequences: False ComparisonType: Text.TextComparisonType.CultureSensitive Result=> EventDescriptionInfiniAnalytics
    END
    **ENDREGION
    IF StartsWith(Event, $'''START''', True) THEN
        SET InfiniAnalyticsAutomationId TO $'''idejemplo-76b14220-32c6-4444-abdc-5204ee05da9c'''
        SET InfiniAnalyticsToken TO $'''tokenejemplo-El5fxatsTWHrwODL34hJ9T18tGgdh1kBPKKwqdE1TqsSZ7GFa5AP'''
        DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> InfiniAnalyticsExecutionId
        Web.InvokeWebService.InvokeWebServicePost Url: $'''https://api.analytics.infini.es/v1/register/''' Accept: $'''application/json''' ContentType: $'''application/json''' CustomHeaders: $'''token: %InfiniAnalyticsToken%''' RequestBody: $'''{
    \"automation_id\":\"%InfiniAnalyticsAutomationId%\",
    \"execution_id\":\"%InfiniAnalyticsExecutionId%\",
    \"event\":\"START\",
    \"description\":\"%EventDescriptionInfiniAnalytics%\",
    \"error_id\":\"\",
    \"error_description\":\"\"
}''' ConnectionTimeout: 30 FollowRedirection: True ClearCookies: False FailOnErrorStatus: False EncodeRequestBody: False UserAgent: $'''Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20100312 Firefox/3.6''' Encoding: Web.Encoding.AutoDetect AcceptUntrustedCertificates: False TrimRequestBody: True Response=> InfiniAnalyticsWebServiceResponse StatusCode=> InfiniAnalyticsStatusCode
    ELSE IF StartsWith(Event, $'''END''', True) THEN
        Text.SplitText.SplitWithDelimiter Text: Event CustomDelimiter: $'''-''' IsRegEx: False Result=> EventList
        Web.InvokeWebService.InvokeWebServicePost Url: $'''https://api.analytics.infini.es/v1/register/''' Accept: $'''application/json''' ContentType: $'''application/json''' CustomHeaders: $'''token: %InfiniAnalyticsToken%''' RequestBody: $'''{
    \"automation_id\":\"%InfiniAnalyticsAutomationId%\",
    \"execution_id\":\"%InfiniAnalyticsExecutionId%\",
    \"event\":\"END\",
    \"description\":\"%EventDescriptionInfiniAnalytics%\"
}''' ConnectionTimeout: 30 FollowRedirection: True ClearCookies: False FailOnErrorStatus: False EncodeRequestBody: False UserAgent: $'''Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20100312 Firefox/3.6''' Encoding: Web.Encoding.AutoDetect AcceptUntrustedCertificates: False TrimRequestBody: True Response=> InfiniAnalyticsWebServiceResponse StatusCode=> InfiniAnalyticsStatusCode
    ELSE IF StartsWith(Event, $'''EVENT''', False) THEN
        Web.InvokeWebService.InvokeWebServicePost Url: $'''https://api.analytics.infini.es/v1/register/''' Accept: $'''application/json''' ContentType: $'''application/json''' CustomHeaders: $'''token: %InfiniAnalyticsToken%''' RequestBody: $'''{
    \"automation_id\":\"%InfiniAnalyticsAutomationId%\",
    \"execution_id\":\"%InfiniAnalyticsExecutionId%\",
    \"event\":\"EVENT\",
    \"description\":\"%EventDescriptionInfiniAnalytics%\"
}''' ConnectionTimeout: 30 FollowRedirection: True ClearCookies: False FailOnErrorStatus: False EncodeRequestBody: False UserAgent: $'''Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20100312 Firefox/3.6''' Encoding: Web.Encoding.AutoDetect AcceptUntrustedCertificates: False TrimRequestBody: True Response=> InfiniAnalyticsWebServiceResponse StatusCode=> InfiniAnalyticsStatusCode
    ELSE IF StartsWith(Event, $'''E''', True) THEN
        ERROR => LastError
        SET LastError TO $'''%LastError.SubflowName%%LastError.AdditionalInfo%%LastError.Location%%LastError.Message.Trimmed%'''
        Text.Replace.ReplaceText Text: LastError TextToFind: $'''\"''' IgnoreCase: False ReplaceWith: $'''\'''' ActivateEscapeSequences: False ComparisonType: Text.TextComparisonType.CultureSensitive Result=> LastError
        Text.Replace.ReplaceTextWithRegex Text: LastError TextToFind: $'''\\r\\n''' IgnoreCase: False ReplaceWith: $'''%''%''' ActivateEscapeSequences: False Result=> LastError
        Text.Replace.ReplaceText Text: LastError TextToFind: $'''\\''' IgnoreCase: False ReplaceWith: $'''%''%''' ActivateEscapeSequences: False ComparisonType: Text.TextComparisonType.CultureSensitive Result=> LastError
        Web.InvokeWebService.InvokeWebServicePost Url: $'''https://api.analytics.infini.es/v1/register/''' Accept: $'''application/json''' ContentType: $'''application/json''' CustomHeaders: $'''token: %InfiniAnalyticsToken%''' RequestBody: $'''{
    \"automation_id\":\"%InfiniAnalyticsAutomationId%\",
    \"execution_id\":\"%InfiniAnalyticsExecutionId%\",
    \"event\":\"ERROR\",
    \"description\":\"%EventDescriptionInfiniAnalytics%\",
    \"error_id\":\"%EventList[0]%\",
    \"error_description\":\"%LastError.Trimmed%\"
}''' ConnectionTimeout: 30 FollowRedirection: True ClearCookies: False FailOnErrorStatus: False EncodeRequestBody: False UserAgent: $'''Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20100312 Firefox/3.6''' Encoding: Web.Encoding.AutoDetect AcceptUntrustedCertificates: False TrimRequestBody: True Response=> InfiniAnalyticsWebServiceResponse StatusCode=> InfiniAnalyticsStatusCode
    END
    SET Event TO $'''NULL'''
END